/**
 * @author mengxia.jing
 * @description vuex的定义，实例化库
 */
import Vue from 'vue'
import Vuex from 'vuex'
import Persistedstate from 'vuex-persistedstate'
import {
  rightsApi
} from '../apis/HomeApi';
// 全局插件注册
Vue.use(Vuex)
// 实例化store
export default new Vuex.Store({
  plugins: [
    Persistedstate({
      storage: window.sessionStorage
    })
  ],
  // 定义模块化
  modules: {
    // 定义模块名字
    common: {
      // 设置命名空间可用
      namespaced: true,
      // 初始化，定义缓存数据对象,相当于仓库中的存储物资的地方
      state: {
        token: '',
        userInfomation: {},
        userRights: []
      },
      // 定义数据暴露、获取接口 -- getter方法
      getters: {
        token: ({
          token
        }) => token,
        userInfomation: ({
          userInfomation
        }) => userInfomation,
        userRights: ({
          userRights
        }) => userRights
      },
      // 定义一个扭转数据的方法
      mutations: {
        setToken(state, token) {
          state.token = token
        },
        setUserInfo(state, user) {
          state.userInfomation = user
        },
        setUserRights(state, rights) {
          state.userRights = rights
        }
      },
      // 定义action方法来执行数据处理业务
      actions: {
        tokenAct({
          commit
        }, token) {
          commit('setToken', token)
        },
        async userRightsAct({
          commit
        }, ids) {
          let result = await rightsApi(ids)
          commit('setUserRights', result.data)
        }
      }
    }
  }
})
